const secrect = '5ff31dc2-d121-4fef-ab76-e4f604aeaad2'
// const cookieKey = 'token'
const jwt = require('jsonwebtoken')

// 也可以写成异步的方式，使用node自带的util包中的promisify包裹

// const { promisify } = require('util')   promisify(fun)

//颁发jwt
// 60*60*24一天
exports.publish = function (res, maxAge = 3600 * 24, info = {}) {
  // info一般写用户信息，一般存用户id就可以了。
  const token = jwt.sign(info, secrect, {
    expiresIn: maxAge
  })
  //添加其他传输
  res.header('authorization', token)
}

exports.verify = function (req) {
  let token = req.headers.authorization
  if (!token) {
    //没有token
    // 这里可以向客户端发送401没有权限
    return null
  }
  // authorization: bearer token
  token = token.split(' ')
  token = token.length === 1 ? token[0] : token[1]

  try {
    const result = jwt.verify(token, secrect)
    return result
  } catch (err) {
    return null
  }
}

// 不进行验证就解析jwt
exports.decode = jwt.decode
